SAP调用外部 Web Service step by step 您所在的位置:网站首页 sap web gui调用程序 SAP调用外部 Web Service step by step

SAP调用外部 Web Service step by step

2024-07-04 08:59| 来源: 网络整理| 查看: 265

刚刚完成一个web service(以下简称WS)的工作,一点小的收获,分享一下。

我们SAP与其他管理系统进行数据交互,当然,idoc的效率是最高的,但是毕竟idoc是SAP的标准,我们做起来当然轻松,而且能提高客户满意度,但是做人嘛,不能太自私,毕竟跟我们奋斗在一线的还有我们的兄弟伙伴,强行要求idoc,必然导致工作量大大增加,那我们就应该在多种数据传输方法中寻求较优的解决方案。

第一步:创建代理

前序工作准备完毕进入SE80:

Create -> Enterprise Service

SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

选择‘Service Consumer’客户代理: SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

选择URL路径,填入伙伴提供的WS连接地址,Next->保存,代理创建完成(简单的WS代理创建到此结束):

SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

※PS:

WS所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以WS几乎可以在任何可以建立internet连接的系统之间进行数据的交互(当然了,因为他适用的广度也就决定了其效率,不过我们的一般用法足够了)。

这边提到了SOAP协议,它是基于XML的网络信息交换的通讯协议。这边需要重点提一下,在我们SAP作为调用服务器的时候,会出现标签不能识别的错误(显示为‘框架错误:Exception occurred in library handler’),这时是因为我们SAP里面支持的 SOAP协议与我们的WSDL版本不同。要识别这种问题可以先将WSDL保存成本地文件,然后删除以下两段:

1.

……

2.

…….

另外值得注意的是有时候我们的WSDL中的信息是不完整的,这种情况尽管去将Message标签删掉,因为我们最终一般都不会通过本地文件去创建代理。

然后创建代理时选择Local File,选取修改好的WSDL文件,如果通过,则打以下note:

notes: note 1403271

可以完全解决WSDL解析的问题(Note是不能乱打滴,做好验证很重要)。

※扩展 SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

这边我简要阐述一下上图红框标记的部分,该部分填入参数SM59创建的RFC连接,注意是HTTP方式:

以WS地址 http://192.168.10.172:1000/Service1.asmx为例

一、当我们的连接目标仅有一个WS(Service1)的时候,则我们SM59直接创建连接,到目标(即Service1): SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

这种情况下,前图只需填入Destination参数(即RFC目标:ZYWS_TEST),Next即可。 SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep 二、如果我们的连接目标上存在多个WS,Service1仅仅是其中之一,那我们是不是就需要在SM59中创建多个连接呢?不需要: SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

我们的连接只到端口就OK,路径前缀(Path Prefix)留空。

创建代理的时候路径后缀(Path Suffix)填入我们的目标WS,Next即可: SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

这边我为什么要说这两种情形,因为WS和我们的SAP不在同一台服务器,我们创建完代理后,SAP端生成的WS代理信息只是当时的,它并不能即时获取WS端的最新信息,当WS端发生变动的时候,SAP却保留着变动前的版本,所以就要求我们的每个WS不要放入太多的方法。

其实一般通过URL的方式就足够了。那这边为什么要提一下这个HTTP的方式?我们知道,我们的WS所在的服务器很多情况下都是存在于internet上的某台服务器上的,不一定是我们的局域网,我们的客户大多数对于公司内部网络管理都是比较严格的,需要一定的权限才允许连接和访问外网,这种情况下我们可以通过开通某个代理端口,限定某个特定用户来实现与internet的信息交互,这样我们就需要在SM59中设置代理参数来实现:

SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

第二步:创建逻辑端口

Tcode: LPCONFIG中的信息填写内容说明与上面 ※扩展中相似,不再赘述。

这边要注意的是:

SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep这个勾必须勾上。

SOAP Action的填写:打开WSDL文件,搜索‘SOAPAction:’标签,后面的http即完整的action名,最后’/’后面就是可调用方法,在左边‘操作’标签中选中方法名,在右边填入对应的http,如下图:

SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep

其实LPCONFIG 是已经过期的事务,因此SAP给我们提供另外一个功能---Tcode: SOAMANAGER.该功能主要使用于SAP WD的开发,这边简单介绍下WS中使用该功能的设置.输入Tcode: SOAMANAGER,如果不能成功web登录,请basis的同事帮忙激活Web gui 相关组件,并且通过RZ10添加主机映射文件。进入如下界面,选择: SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep 搜索项填入如下内容 SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep 选中我们在se80中创建的代理名,点Apply Selection按钮: SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep 出现如下界面,选择创建逻辑端口: SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep 上图粗框中的勾记得钩上,因为这边的SOAP Action是自动带出来的(当然,也可以手动维护,但养成习惯总是好事),其他介绍 类似于  ※扩展 不再赘述,完成后会出现: SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep SAP调用外部 wbrWeb wbrService wbrstep wbrby wbrstep 注:当WS中新增了可调用方法时候,该逻辑端口需要删除重新创建,SAP目前好象还不能自动更新端口方法。(这样创建完后若调用出现问题,请参照 notes 1361688). 剩下的工作就是去call method了,就不再献丑了。另外值得一提的就是调用中的数据类型经常出错问题,SOAMANAGER提供实时log查询功能(时间范围比较短),可以准确掌握出错位置信息。另外当系统出现特别奇怪现象且暂时无法解决的时候,我们同样可以通过直接编辑SOAP脚本,来实现数据交互,有空再探讨。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有